Skip to content

fix(images): hide unpublished Utah testing image commands and attestations - #1113

Open
castrojo wants to merge 1 commit into
projectbluefin:v4from
castrojo:fix-utah-testing-image-hide
Open

fix(images): hide unpublished Utah testing image commands and attestations#1113
castrojo wants to merge 1 commit into
projectbluefin:v4from
castrojo:fix-utah-testing-image-hide

Conversation

@castrojo

@castrojo castrojo commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Problem

docs/utah.mdx and the generated image catalog (static/data/images.json) published bootc switch and cosign verify/attestation commands for ghcr.io/projectbluefin/utah:testing, even though that tag has never been pushed (skopeo inspect docker://ghcr.io/projectbluefin/utah:testing returns manifest unknown).

Root cause: buildTopStreams' fallback path in scripts/fetch-github-images.js fabricated a switch command for the first streamOrder entry whenever none of the registry's tags matched, even if the registry had no tags at all. buildSecurityInfo had no way to know a tag was unpublished, so it always rendered live verify/attest commands based on repo signing config alone.

Fix

  • Added isImagePublished(spec, tagSet) to check whether any of a product's streamOrder tags actually exist in the registry before building switch/security commands.
  • In buildProduct, when a product's primary tag isn't published, streams/testingStreams stay empty and security is cleared (hasAttestation: false, no commands). The product output now carries an explicit imagePublished: false flag.
  • ImagesCatalog.tsx now renders an "awaiting initial release" message in the Streams and Signing/SBOM sections instead of an empty tag list or unpublished commands when imagePublished is false.
  • Regenerated the Utah entry in static/data/images.json to reflect the new state immediately (rather than waiting for the next scheduled fetch job).

Testing

  • npm run test (486 tests, all passing)
  • npm run typecheck (no new errors; pre-existing unrelated error in MusicPlaylist.tsx from an untracked generated data file)
  • npx eslint on changed files (no new warnings/errors)
  • npx prettier --check on changed files

Fixes #1081

— hive: backend=copilot model=claude-sonnet-5

🐝 Hive Agent: contributor | SHA: 89ef75a1

…tions

Utah's product spec only has a single 'testing' stream tag. When the
ghcr.io/projectbluefin/utah:testing tag has never been pushed, the
registry tag list is empty, but buildTopStreams' fallback path still
fabricated a bootc switch command for it, and buildSecurityInfo still
rendered cosign verify/verify-attestation commands with
hasAttestation: true — even though skopeo inspect reports
'manifest unknown' for that tag.

Add isImagePublished(spec, tagSet) to check whether any of a
product's streamOrder tags actually exist in the registry before
building switch commands or security/attestation commands. When a
product's primary tag isn't published yet, streams/testingStreams are
left empty and security is cleared, and the images.json product gains
an explicit imagePublished: false flag.

ImagesCatalog.tsx now renders an 'awaiting initial release' message in
both the Streams and Signing/SBOM sections instead of empty tag lists
or unpublished commands when imagePublished is false.

Regenerated the Utah entry in static/data/images.json to reflect the
new awaiting-initial-release state until the next scheduled fetch job
runs.

Fixes projectbluefin#1081

Signed-off-by: castrojo <castrojo@users.noreply.github.com>
@castrojo castrojo added the 3-clanker-queue Work admitted to the agent-maintained queue. label Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3-clanker-queue Work admitted to the agent-maintained queue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant